import { updateProfile } from '../../utils/api';
import { initCapsuleAlignment } from '../../utils/capsule-align';

interface FormData {
  nickname: string;
  // avatar: string;
  qq_number: string;
}

interface UserInfo {
  nickname?: string;
  avatar?: string;
  qq?: string;
  qq_number?: string;
}

Page({
  data: {
    userInfo: {} as UserInfo,
    formData: {
      nickname: '',
      // avatar: '',
      qq_number: ''
    } as FormData,
    isSaving: false,
    headerStyle: ''
  },

  onLoad(options: any) {
    // 检查登录状态
    this.checkLoginStatus();
    
    // 初始化胶囊按钮对齐
    initCapsuleAlignment(this);
  },

  onShow() {
    // 页面显示时也检查登录状态
    this.checkLoginStatus();
  },



  // 检查登录状态
  checkLoginStatus() {
    const token = wx.getStorageSync('accessToken');
    const userInfo = wx.getStorageSync('userInfo');
    
    if (!token) {
      wx.showToast({
        title: '请先登录',
        icon: 'none',
        duration: 2000
      });
      
      setTimeout(() => {
        wx.redirectTo({
          url: '/pages/qrlogin/qrlogin'
        });
      }, 2000);
      return;
    }

    // 获取传递过来的用户信息
    const pages = getCurrentPages();
    const prevPage = pages[pages.length - 2];
    if (prevPage && prevPage.data.userInfo) {
      console.log('从上一页获取用户信息:', prevPage.data.userInfo);
      const qqNumber = prevPage.data.userInfo.qq_number || prevPage.data.userInfo.qq || '';
      console.log('获取到的QQ号:', qqNumber);
      this.setData({
        userInfo: prevPage.data.userInfo,
        formData: {
          nickname: prevPage.data.userInfo.nickname || '',
          // avatar: prevPage.data.userInfo.avatar || '',
          qq_number: qqNumber
        }
      });
    } else if (userInfo) {
      // 如果页面间没有传递用户信息，使用本地存储的用户信息
      console.log('从本地存储获取用户信息:', userInfo);
      const qqNumber = userInfo.qq_number || userInfo.qq || '';
      console.log('获取到的QQ号:', qqNumber);
      this.setData({
        userInfo: userInfo,
        formData: {
          nickname: userInfo.nickname || '',
          // avatar: userInfo.avatar || '',
          qq_number: qqNumber
        }
      });
    }
  },

  // 返回上一页
  goBack() {
    wx.navigateBack();
  },

  // 昵称输入处理
  onNicknameInput(e: any) {
    this.setData({
      'formData.nickname': e.detail.value
    });
  },

  // QQ号输入处理
  onQQInput(e: any) {
    this.setData({
      'formData.qq_number': e.detail.value
    });
  },

  // 选择头像
  // chooseAvatar() {
  //   wx.chooseImage({
  //     count: 1,
  //     sizeType: ['compressed'],
  //     sourceType: ['album', 'camera'],
  //     success: (res) => {
  //       const tempFilePath = res.tempFilePaths[0];
        
  //       // 显示加载提示
  //       wx.showLoading({
  //         title: '上传中...',
  //         mask: true
  //       });

  //       // 压缩图片
  //       this.compressImage(tempFilePath);
  //     },
  //     fail: (err) => {
  //       console.error('选择图片失败:', err);
  //       wx.showToast({
  //         title: '选择图片失败',
  //         icon: 'none'
  //       });
  //     }
  //   });
  // },

  // 压缩图片
  // compressImage(filePath: string) {
  //   wx.compressImage({
  //     src: filePath,
  //     quality: 80,
  //     success: (res) => {
  //       // 上传压缩后的图片
  //       this.uploadAvatar(res.tempFilePath);
  //     },
  //     fail: (err) => {
  //       console.error('压缩图片失败:', err);
  //       // 如果压缩失败，使用原图
  //       this.uploadAvatar(filePath);
  //     }
  //   });
  // },

  // 上传头像
  // uploadAvatar(filePath: string) {
  //   // 这里应该调用上传API，暂时使用本地路径
  //   // 实际项目中需要将图片上传到服务器并获取URL
  //   // 示例：调用文件上传API
  //   /*
  //   wx.uploadFile({
  //     url: 'https://api.molipai.vip/api/v1/upload/avatar',
  //     filePath: filePath,
  //     name: 'avatar',
  //     header: {
  //       'Authorization': `Bearer ${wx.getStorageSync('accessToken')}`
  //       },
  //     success: (res) => {
  //       const data = JSON.parse(res.data);
  //       if (data.success) {
  //         this.setData({
  //           'formData.avatar': data.url
  //         });
  //         wx.hideLoading();
  //         wx.showToast({
  //           title: '头像更新成功',
  //           icon: 'success'
  //         });
  //       } else {
  //         throw new Error(data.message || '上传失败');
  //       }
  //     },
  //     fail: (err) => {
  //       console.error('上传头像失败:', err);
  //       wx.hideLoading();
  //       wx.showToast({
  //         title: '上传失败，请重试',
  //         icon: 'none'
  //       });
  //     }
  //   });
  //   */
    
  //   // 临时使用本地路径
  //   this.setData({
  //     'formData.avatar': filePath
  //   });
    
  //   wx.hideLoading();
  //   wx.showToast({
  //     title: '头像更新成功',
  //     icon: 'success'
  //   });
  // },

  // 保存个人信息
  async saveProfile() {
    const { formData } = this.data;
    
    // 表单验证
    if (!formData.nickname.trim()) {
      wx.showToast({
        title: '请输入昵称',
        icon: 'none'
      });
      return;
    }

    if (!formData.qq_number.trim()) {
      wx.showToast({
        title: '请输入QQ号',
        icon: 'none'
      });
      return;
    }

    if (!/^\d{5,11}$/.test(formData.qq_number.trim())) {
      wx.showToast({
        title: 'QQ号格式不正确',
        icon: 'none'
      });
      return;
    }

    this.setData({ isSaving: true });

    try {
      // 调用API更新个人信息
      const response = await updateProfile({
        nickname: formData.nickname.trim(),
        // avatar: formData.avatar,
        qq_number: formData.qq_number.trim()
      });

      if (response) {
        wx.showToast({
          title: '保存成功',
          icon: 'success'
        });

        // 更新上一页的用户信息
        const pages = getCurrentPages();
        const prevPage = pages[pages.length - 2];
        if (prevPage && prevPage.setData) {
          prevPage.setData({
            userInfo: {
              ...prevPage.data.userInfo,
              nickname: formData.nickname.trim(),
              // avatar: formData.avatar,
              qq_number: formData.qq_number.trim(),
              qq: formData.qq_number.trim() // 兼容旧字段
            }
          });
        }

        // 延迟返回，让用户看到成功提示
        setTimeout(() => {
          wx.navigateBack();
        }, 1000);
      } else {
        throw new Error(response || '保存失败');
      }
    } catch (error: any) {
      console.error('保存个人信息失败:', error);
      
      // 检查是否是403错误
      if (error.statusCode === 403) {
        console.log('保存个人信息时检测到403错误');
        wx.showToast({
          title: '保存失败，请重新登录',
          icon: 'none'
        });
        
        // 403错误时，跳转到登录页面
        setTimeout(() => {
          wx.redirectTo({
            url: '/pages/qrlogin/qrlogin'
          });
        }, 2000);
      } else {
        wx.showToast({
          title: error.message || '保存失败，请重试',
          icon: 'none'
        });
      }
    } finally {
      this.setData({ isSaving: false });
    }
  }
}); 